
///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2009, Arizona State University
//  All rights reserved.
//  BSD License: http://www.opensource.org/licenses/bsd-license.html
//  Author: Adam Kubach
//
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//
//  Class to contain data for labeling objects.
//
///////////////////////////////////////////////////////////////////////////////

#include "Minerva/Plugins/GDAL/LabelData.h"

#include "Usul/Factory/RegisterCreator.h"

using namespace Minerva::Layers::GDAL;

USUL_FACTORY_REGISTER_CREATOR ( LabelData );

///////////////////////////////////////////////////////////////////////////////
//
//  Constructor.
//
///////////////////////////////////////////////////////////////////////////////

LabelData::LabelData() : BaseClass(),
  _show ( false ),
  _color ( 1.0, 1.0, 1.0, 1.0 ),
  _size ( 25.0f ),
  SERIALIZE_XML_INITIALIZER_LIST
{
  this->_registerMembers();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Copy Constructor.
//
///////////////////////////////////////////////////////////////////////////////

LabelData::LabelData ( const LabelData& data ) : BaseClass ( data ),
  _show ( data._show ),
  _color ( data._color ),
  _size ( data._size ),
  SERIALIZE_XML_INITIALIZER_LIST
{
  this->_registerMembers();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Destructor.
//
///////////////////////////////////////////////////////////////////////////////

LabelData::~LabelData()
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Register members.
//
///////////////////////////////////////////////////////////////////////////////

void LabelData::_registerMembers()
{
  this->_addMember ( "show", _show );
  this->_addMember ( "color", _color );
  this->_addMember ( "size", _size );
}


///////////////////////////////////////////////////////////////////////////////
//
//  Set show label.
//
///////////////////////////////////////////////////////////////////////////////

void LabelData::show ( bool b )
{
  Guard guard ( this );
  _show = b;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get show label.
//
///////////////////////////////////////////////////////////////////////////////

bool LabelData::show() const
{
  Guard guard ( this );
  return _show;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Set the label color.
//
///////////////////////////////////////////////////////////////////////////////

void LabelData::color ( const Usul::Math::Vec4f& color )
{
  Guard guard ( this );
  _color = color;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the label color.
//
///////////////////////////////////////////////////////////////////////////////

Usul::Math::Vec4f LabelData::color() const
{
  Guard guard ( this );
  return _color;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Set the label size.
//
///////////////////////////////////////////////////////////////////////////////

void LabelData::size ( float size )
{
  Guard guard ( this );
  _size = size;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the label size.
//
///////////////////////////////////////////////////////////////////////////////

float LabelData::size() const
{
  Guard guard ( this );
  return _size;
}

